/**
 * 
 */
package com.local.runnable.newScheduledThread;

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

import org.joda.time.DateTime;

/**
 * newScheduledThreadPool
 * 创建一个大小无限的线程池。
 * 此线程池支持定时以及周期性执行任务的需求。
 * @author Administrator
 *
 */
public class NewScheduledThread {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
		DateTime dateTime=new DateTime();
		System.out.println("原时间:"+dateTime.toString("yyyy-MM-dd HH:mm:ss SSS"));
		exec.scheduleAtFixedRate(new Runnable() {//每隔一段时间就触发异常
			@Override
			public void run() {
				//throw new RuntimeException();
				DateTime dateTime2=new DateTime();
				System.out.println("执行任务A:"+dateTime2.toString("yyyy-MM-dd HH:mm:ss SSS"));
			}
		}, 5, 10, TimeUnit.SECONDS);
		
		
		
		exec.scheduleAtFixedRate(new Runnable() {//每隔一段时间打印系统时间，证明两者是互不影响的
			@Override
			public void run() {
				DateTime dateTime2=new DateTime();
				System.out.println("执行任务B:"+dateTime2.toString("yyyy-MM-dd HH:mm:ss SSS"));
			}
		}, 1, 20, TimeUnit.SECONDS);
		
		
		exec.scheduleAtFixedRate(new Runnable() {//每隔一段时间打印系统时间，证明两者是互不影响的
			@Override
			public void run() {
				DateTime dateTime2=new DateTime();
				System.out.println("执行任务C:"+dateTime2.toString("yyyy-MM-dd HH:mm:ss SSS"));
			}
		}, 1, 20, TimeUnit.SECONDS);
	}
}
